#pragma once
#include <iostream>
#include <string>
#include <functional>
#include <windows.h>
#include <graphics.h>
#include"Button.h"
using namespace std;
class TextBox {
private:
    int x; int firstX; int secondX;
    int y; int firstY; int secondY;
    int width;  int firstWidth; int secondWidth;
    int height; int firstHeight; int secondHeight;
    int maxWord;      // 最长单词个数
    wstring text;   // 文本内容
    //int text_len;
    bool isSelected;     // 是否被选中
    bool showCursor;     // 是否显示光标
    int cursorPos;       // 光标位置
    TextBox* nextField = nullptr; // 指向下一个输入框
    function<void()> onFinalEnter = nullptr; // 最终回车回调

public:
    TextBox(int x, int y, int width, int height, int maxWord);
    bool backspace;      // 退格标志

    // 关键修正点：添加 const 修饰符
    wstring getText() const;    // 获取文本内容
    bool getSelect() ;          // 获取选中状态
    bool isEmpty() const;            // 判断是否为空

    // 设置下一个输入框
    void setNextField(TextBox* next);
    // 设置最终确认回调
    void setFinalCallback(const function<void()> &callback);

    void setSecondPosition(int x, int y, int width, int height);

    void updatePosition();

    void clear();                    // 清空文本框
    void setText(const wstring& newText); // 设置文本（优化参数传递）
    void draw();                     // 绘制文本框
    bool checkClick(int mouseX, int mouseY); // 检查点击事件
    bool keyInput(wchar_t ch);       // 处理键盘输入
    void updateCursor();             // 更新光标状态
};